// ============================================================================
// ============================================================================
// Module Name: 	system configuration
// File Name: 		syscfg.h
// ============================================================================
// Version: 	
// Date:			
// Modifier:	
// Comment:		
// 
// ============================================================================

#ifndef _SYS_CFG_H_
#define _SYS_CFG_H_


// ============================================================================
// 平台CPU类型及编译器宏选择
// ============================================================================
// ---CPU类型选择宏
#define MSP430F5438					01
#define MSP432P401					80				// 
#define STM32F103VC					90				//  
#define STM32F303VC					91				//  
#define STM32F407					92				//  
#define STM32G474					100				//  
#define AT32F403A					101				// 雅特力
#define CPU_TYPE					AT32F403A

// ---编译器类型选择宏
#define NEC_CC78K0					0
#define IAR_78K0					1
#define IAR_430						2
#define IAR_ARM						3
#define COMPILER_TYPE				IAR_ARM

// ============================================================================
// 系统底层参数配置宏
// ============================================================================
// ---片外晶振配置
#define HAS_EXT_LFOSC				1				// 是否存在片外低频晶振(一般指32768)
#define HAS_EXT_HFOSC				1				// 是否存在片外高频晶振(一般为8M)
#define EN_EXT_LFOSC				1				// 是否使能外部低频晶振
#define EN_EXT_HFOSC				1				// 是否使能外部高频晶振
// ---CPU主频配置
#define F_CPU_HZ					240000000
// ---systick配置
#define TTICK						u32
#define SYS_TICKS_PER_SEC			1000
#define SYS_TICKS_PER_1MIN			(SYS_TICKS_PER_SEC*60)
#if (SYS_TICKS_PER_SEC == 1000)
#define MS2TICKS(ms)				(ms)
#else
#define MS2TICKS(ms)				((u32)(ms) * SYS_TICKS_PER_SEC / 1000)
#endif
#define TICK2MS(tick)				(((u32)(tick))*1000/SYS_TICKS_PER_SEC)
#define TICK2SEC(tick)				(((float)(tick)) / SYS_TICKS_PER_SEC)

// ---看门狗溢出时间配置
#define WDT_OVERFLOW_TICKS			(SYS_TICKS_PER_SEC*2)		// 单位ticks

#define POWERON_SYSFLAG				0xAA5555AA
 
// ============================================================================
// 中断优先级配置定义
// 分为高级别(抢占级别)和低级别(响应级别),数值越小优先级越高
// ============================================================================
#define INT_PRI_HIGHLV_SYSTICK			3			// systick中断
#define INT_PRI_LOWLV_SYSTICK			0

#define INT_PRI_HIGHLV_DMAADC			2			// ad采样dma传输完成中断
#define INT_PRI_LOWLV_DMAADC			0

#define INT_PRI_HIGHLV_ATTHS			4			// att高速spi口的dma传输完成中断
#define INT_PRI_LOWLV_ATTHS			0


// 串口优先级
#define INT_PRI_HIGHLV_USART1			1
#define INT_PRI_LOWLV_USART1			0
#define INT_PRI_HIGHLV_USART2			1
#define INT_PRI_LOWLV_USART2			0
#define INT_PRI_HIGHLV_USART3			1
#define INT_PRI_LOWLV_USART3			0
#define INT_PRI_HIGHLV_USART4			1
#define INT_PRI_LOWLV_USART4			0

#define INT_PRI_HIGHLV_TIMADC			0
#define INT_PRI_LOWLV_TIMADC			0


// ============================================================================
// Uart Driver Module
// ============================================================================
// 串口配置暂时在各自驱动中配置


// ============================================================================
// IIC Driver Module
// ============================================================================
// ---驱动类型选择
#define SOFT_IIC			0				// 软件模拟
#define HW_IIC				1				// 硬件模块查询
#define IIC_TYPE			SOFT_IIC		// note:暂时不支持硬件iic

#define IIC_Bus1_En			1				// 第2个IIC bus是否开放.0--不开放,1--开放
#define IIC_Bus2_En			0				// 第3个IIC bus是否开放.0--不开放,1--开放
#define IIC_Bus3_En			0				// 第4个IIC bus是否开放.0--不开放,1--开放

// ---根据ii.c中的IO口定义选择相应的bus序号
#define IICBus0				0				// 
#define IICBus1				1				// 
#define IICBus2				2				// 
#define IICBus3				3				// 

#define EEPromBus			IICBus0			// EEPROM
//#define RTCBus				IICBus1			// 时钟驱动 RTC驱动暂时自行独立编写

// ---选择实际使用的EEPROM型号和page大小
#define Dev24C1024			0				// 暂不支持1024
#define Dev24C512			1
#define Dev24C256			2
#define Dev24C64			3
#define Dev24C32			4
#define Dev24C01_16			5
#define Dev24Other			6				// 目前只考虑256和512的级联
#define Dev24C128			7
#define AT24_ChipType		Dev24C64		// chip type
//#define AT24_ChipType		Dev24C128		// chip type

#if (AT24_ChipType == Dev24C512) || (AT24_ChipType == Dev24C256) || (AT24_ChipType == Dev24C1024)
	#define PAGEWORD	        128
#elif AT24_ChipType == Dev24C32
	#define PAGEWORD	        16
#elif AT24_ChipType == Dev24C64
	#define PAGEWORD	        32
#elif AT24_ChipType == Dev24C128
	#define PAGEWORD	        64
#else
	#error "eeprom chip choose error!"
#endif
#define AT24_PAGESIZE		PAGEWORD				// page size

// ============================================================================
// SPI Driver Module
// ============================================================================
// 驱动类型选择 
#define	SoftWare_SPI		0				// 软件模拟
#define	HardWare_SPI		1				// CPU硬件SPI驱动
#define	SPI_TYPE			SoftWare_SPI	// SPI驱动暂时也只支持软驱动


// ============================================================================ 
#define	ATT_CHIP_7022		0
#define	ATT_CHIP_7132		1
#define	ATT_CHIP_USED		ATT_CHIP_7132

// ============================================================================ 
#define		TEMP_MEASU_MAXNUM			3


#endif /* _SYS_CFG_H_ */
// ============================================================================
// End
// ============================================================================
